from django.contrib.auth.models import User
from .models import Role, Permission, UserRole, RolePermission


def has_permission(user, required_permission):
    """
    检查用户是否具有指定权限
    """
    # 获取用户的角色
    user_roles = Role.objects.filter(userrole__user=user)
    
    # 检查角色是否具有权限
    permissions = Permission.objects.filter(
        rolepermission__role__in=user_roles,
        code=required_permission
    )
    
    return permissions.exists()


def get_user_permissions(user):
    """
    获取用户的所有权限代码列表
    """
    # 获取用户的角色
    user_roles = Role.objects.filter(userrole__user=user)
    
    # 获取角色对应的权限
    permissions = Permission.objects.filter(
        rolepermission__role__in=user_roles
    ).values_list('code', flat=True)
    
    return list(permissions)


def get_user_roles(user):
    """
    获取用户的所有角色名称列表
    """
    roles = Role.objects.filter(userrole__user=user).values_list('name', flat=True)
    return list(roles)